# 821. 字符的最短距离

/**
 * @param {string} s
 * @param {character} c
 * @return {number[]}
 */
//  输入:s = "loveleetcode", c = "e"
//  输出:[3,2,1,0,1,0,0,1,2,2,1,0]
//  解释:字符 'e' 出现在下标 3、5、6 和 11 处(下标从 0 开始计数)。
//  距下标 0 最近的 'e' 出现在下标 3 ,所以距离为 abs(0 - 3) = 3 。
//  距下标 1 最近的 'e' 出现在下标 3 ,所以距离为 abs(1 - 3) = 3 。
//  对于下标 4 ,出现在下标 3 和下标 5 处的 'e' 都离它最近,但距离是一样的 abs(4 - 3) == abs(4 - 5) = 1 。
//  距下标 8 最近的 'e' 出现在下标 6 ,所以距离为 abs(8 - 6) = 2 。

var shortestToChar = function(s, c) {
  const arr = [];
  const cPositionArr = [];

  for (let i = 0; i < s.length; i++) {
    if (s[i] === c) cPositionArr.push(i);
  }

  for (let i = 0; i < s.length; i++) {
    const p = cPositionArr.map((position) => Math.abs(position - i));
    arr.push(Math.min(...p));
  }

  return arr;
};

shortestToChar("loveleetcode", "e");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Last Updated: 6/27/2023, 7:40:45 PM